Skip to content

TRT-2647: rhcos10 default for 5.0#3498

Open
neisw wants to merge 6 commits into
openshift:mainfrom
neisw:trt-2647-5.0-rhcos10-default
Open

TRT-2647: rhcos10 default for 5.0#3498
neisw wants to merge 6 commits into
openshift:mainfrom
neisw:trt-2647-5.0-rhcos10-default

Conversation

@neisw
Copy link
Copy Markdown
Contributor

@neisw neisw commented May 5, 2026

Staging for when the default changes over to rhcos10 for 5.0

Open question, should we remove OS: from the 5.0 main view so they are all picked up by default or explicitly specify rhcos9 and rhcos10?

Summary by CodeRabbit

  • New Features

    • RHCOS 10 is now included as a supported OS variant and becomes the default fallback for v5/main jobs.
  • Chores

    • Reworked a v5 OS-comparison scenario: swapped comparison direction, changed feature-set, adjusted thresholds (minimum failures, pity factor, pass-rate) and toggles, and removed an obsolete comparison.
  • Tests

    • Updated test expectations to reflect RHCOS 10 as the v5/main fallback.

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: automatic mode

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label May 5, 2026
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented May 5, 2026

@neisw: This pull request references TRT-2647 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Staging for when the default changes over to rhcos10 for 5.0

Open question, should we remove OS: from the 5.0 main view so they are all picked up by default or explicitly specify rhcos9 and rhcos10?

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 5, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Variant OS fallback for OpenShift 5.x/main changed from rhcos9 to rhcos10 in the variant registry; config scenarios were updated to include or compare rhcos10 (one 5.0 comparison reworked, one 4.22 techpreview comparison removed). Tests updated to expect rhcos10 where applicable.

Changes

Variant OS default & related config/test updates

Layer / File(s) Summary
Variant registry fallback
pkg/variantregistry/ocp.go
setOS fallback now sets variants[VariantOS] = "rhcos10" when VariantReleaseMajor == "5" or job name indicates main/master (previously "rhcos9").
Include rhcos10 in component_readiness scenarios
config/views.yaml (component_readiness: 5.0-main, 5.0-rosa, 5.0-main-mass-failure)
Each scenario's variant_options.include_variants.OS list now includes rhcos10 alongside rhcos9.
5.0 OS comparison rework
config/views.yaml (replaced block)
Replaced 5.0-techpreview-rhcos9-vs-rhcos10 with 5.0-rhcos10-vs-rhcos9; switched variant_options.include_variants.FeatureSet from techpreviewdefault, set included OS to rhcos10 and compare against rhcos9, and adjusted advanced_options (minimum_failure: 3→4, pity_factor: 5→10, pass_rate_required_new_tests: 95→90, include_multi_release_analysis: true→false). metrics.enabled remains false; regression_tracking.enabled remains true.
Scenario removal
config/views.yaml
Removed 4.22-techpreview-rhcos9-vs-rhcos10 scenario.
Tests updated
pkg/variantregistry/ocp_test.go
TestVariantSyncer expectations updated: several job cases now expect VariantOS == "rhcos10" instead of "rhcos9"; other expected keys unchanged.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes


Caution

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

  • Ignore

❌ Failed checks (1 error, 1 warning)

Check name Status Explanation Resolution
Sql Injection Prevention ❌ Error loader.go uses fmt.Sprintf to construct SQL queries instead of parameterized queries. This violates the instruction to avoid string concatenation in SQL query construction. Replace fmt.Sprintf SQL queries with parameterized queries. Extend verifyVariants() to validate delete operations.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (15 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'TRT-2647: rhcos10 default for 5.0' clearly and specifically summarizes the main change: making rhcos10 the default OS for OpenShift 5.0. This directly aligns with the changeset modifications across config, variant registry logic, and tests.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Go Error Handling ✅ Passed Go error handling check passed. Changes only modify OS variant defaults in the setOS setter function and update test assertions. No ignored errors, panic calls, or nil pointer dereferences introduced.
Excessive Css In React Should Use Styles ✅ Passed Custom check is not applicable. PR modifies only Go code and YAML configuration (variant registry, OS version handling). No React components, CSS, or inline styles present in any modified files.
Test Coverage For New Features ✅ Passed Configuration changes excluded per exceptions. Private setOS() logic is tested indirectly via TestVariantSyncer with properly updated test expectations for the new behavior.
Single Responsibility And Clear Naming ✅ Passed PR follows single responsibility and clear naming principles. setOS follows set pattern, no generic names, focused packages, appropriate parameter counts, all methods have clear purposes.
Stable And Deterministic Test Names ✅ Passed The check requires stable test names in Ginkgo tests. This PR does not contain Ginkgo tests—only standard Go tests using t.Run with static names. The check does not apply.
Test Structure And Quality ✅ Passed Custom check is for Ginkgo test code. The modified test file uses standard Go testing package with table-driven tests, not Ginkgo. Check is not applicable to this PR.
Microshift Test Compatibility ✅ Passed The sippy repository is a test result analysis tool, not an OpenShift e2e test repository. This PR contains no Ginkgo e2e tests, only configuration and unit test changes. The check is not applicable.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No Ginkgo e2e tests were added in this PR. The PR modifies configuration files and Go unit tests in the Sippy project, not OpenShift e2e tests. The SNO compatibility check is not applicable.
Topology-Aware Scheduling Compatibility ✅ Passed PR modifies a CI analysis tool (Sippy), not deployment manifests or operator code. Contains no scheduling constraints, pod affinity, nodeSelectors, tolerations, or other topology-dependent constructs.
Ote Binary Stdout Contract ✅ Passed PR modifies configuration and internal helper functions only. No process-level code or stdout operations introduced. OTE Binary Stdout Contract not violated.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo e2e tests are present in this PR. Changes are limited to YAML configuration, Go library code for OS detection, and Go unit tests using the standard testing package, not Ginkgo framework.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

@openshift-ci openshift-ci Bot requested review from deads2k and sosiouxme May 5, 2026 19:25
@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label May 5, 2026
@openshift-merge-bot openshift-merge-bot Bot added the ready-for-human-review Indicates a PR has been reviewed by automated tools and is ready for human review label May 5, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
pkg/variantregistry/ocp_test.go (1)

1139-1161: ⚡ Quick win

Consider adding a no-release -main- sibling case for branch-fallback coverage.

You now validate -master- with no release (rhcos10). Adding a matching -main- no-release case would close the parity gap for isMainBranch.

✅ Suggested test addition
 		{
 			job: "periodic-ci-openshift-master-no-release-version-e2e-aws-ovn",
 			expected: map[string]string{
 				VariantArch:           "amd64",
 				VariantInstaller:      "ipi",
 				VariantPlatform:       "aws",
 				VariantNetwork:        "ovn",
 				VariantNetworkStack:   "ipv4",
 				VariantOwner:          "eng",
 				VariantSuite:          "unknown",
 				VariantTopology:       "ha",
 				VariantUpgrade:        VariantNoValue,
 				VariantAggregation:    VariantNoValue,
 				VariantProcedure:      "none",
 				VariantJobTier:        "candidate",
 				VariantFeatureSet:     VariantDefaultValue,
 				VariantNetworkAccess:  VariantDefaultValue,
 				VariantScheduler:      VariantDefaultValue,
 				VariantSecurityMode:   VariantDefaultValue,
 				VariantCGroupMode:     "v2",
 				VariantLayeredProduct: VariantNoValue,
 				VariantOS:             "rhcos10",
 			},
 		},
+		{
+			job: "periodic-ci-openshift-main-no-release-version-e2e-aws-ovn",
+			expected: map[string]string{
+				VariantArch:           "amd64",
+				VariantInstaller:      "ipi",
+				VariantPlatform:       "aws",
+				VariantNetwork:        "ovn",
+				VariantNetworkStack:   "ipv4",
+				VariantOwner:          "eng",
+				VariantSuite:          "unknown",
+				VariantTopology:       "ha",
+				VariantUpgrade:        VariantNoValue,
+				VariantAggregation:    VariantNoValue,
+				VariantProcedure:      "none",
+				VariantJobTier:        "candidate",
+				VariantFeatureSet:     VariantDefaultValue,
+				VariantNetworkAccess:  VariantDefaultValue,
+				VariantScheduler:      VariantDefaultValue,
+				VariantSecurityMode:   VariantDefaultValue,
+				VariantCGroupMode:     "v2",
+				VariantLayeredProduct: VariantNoValue,
+				VariantOS:             "rhcos10",
+			},
+		},
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/variantregistry/ocp_test.go` around lines 1139 - 1161, Add a sibling test
case to the table in ocp_test.go that mirrors the existing
"periodic-ci-openshift-master-no-release-version-e2e-aws-ovn" case but uses
"periodic-ci-openshift-main-no-release-version-e2e-aws-ovn" as the job name to
exercise the isMainBranch path; copy the expected map (VariantArch,
VariantInstaller, VariantPlatform, VariantNetwork, VariantNetworkStack,
VariantOwner, VariantSuite, VariantTopology, VariantUpgrade, VariantAggregation,
VariantProcedure, VariantJobTier, VariantFeatureSet, VariantNetworkAccess,
VariantScheduler, VariantSecurityMode, VariantCGroupMode, VariantLayeredProduct,
VariantOS) from the master case so the assertion logic in the test (table-driven
test around the job field) verifies parity for main-branch fallback.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@pkg/variantregistry/ocp_test.go`:
- Around line 1139-1161: Add a sibling test case to the table in ocp_test.go
that mirrors the existing
"periodic-ci-openshift-master-no-release-version-e2e-aws-ovn" case but uses
"periodic-ci-openshift-main-no-release-version-e2e-aws-ovn" as the job name to
exercise the isMainBranch path; copy the expected map (VariantArch,
VariantInstaller, VariantPlatform, VariantNetwork, VariantNetworkStack,
VariantOwner, VariantSuite, VariantTopology, VariantUpgrade, VariantAggregation,
VariantProcedure, VariantJobTier, VariantFeatureSet, VariantNetworkAccess,
VariantScheduler, VariantSecurityMode, VariantCGroupMode, VariantLayeredProduct,
VariantOS) from the master case so the assertion logic in the test (table-driven
test around the job field) verifies parity for main-branch fallback.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 683d6765-f56e-45e2-9847-79272263d51c

📥 Commits

Reviewing files that changed from the base of the PR and between 54af8d3 and 72e7de3.

📒 Files selected for processing (2)
  • pkg/variantregistry/ocp_test.go
  • pkg/variantregistry/snapshot.yaml

@neisw
Copy link
Copy Markdown
Contributor Author

neisw commented May 5, 2026

/hold
until we are ready to switch over

@openshift-ci openshift-ci Bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label May 5, 2026
@openshift-merge-bot
Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e

@petr-muller
Copy link
Copy Markdown
Member

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label May 5, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 5, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: neisw, petr-muller

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label May 7, 2026
@neisw neisw force-pushed the trt-2647-5.0-rhcos10-default branch from 72e7de3 to 84a1567 Compare May 7, 2026 17:06
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label May 7, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 7, 2026

New changes are detected. LGTM label has been removed.

@openshift-ci openshift-ci Bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label May 7, 2026
@openshift-merge-bot
Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e

Copy link
Copy Markdown
Contributor

@dgoodwin dgoodwin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Everything else looks good.

Holding until we hear it's flipped sounds good.

Comment thread config/views.yaml Outdated
enabled: false
regression_tracking:
enabled: true
enabled: false
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is interesting, looks like it flipped several settings to the "calm things down for a GA branch", is that intentional for the 9 vs 10 5.0 view? I would probably keep regression tracking on as well.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dgoodwin your jira card TRT-2647 indicates

Add an rhcos9 vs 10 cross compare view instead to minimally monitor that 9 doesn’t get worse than 10. Probably could detune it the way we do for ga -main views now. We don’t want to be overly sensitive.

I can enable regression_tracking here if you like. Just let me know what you want the final config to look like.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes tracking would be useful here.

@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label May 10, 2026
neisw added 4 commits May 12, 2026 07:58
# Conflicts:
#	pkg/variantregistry/snapshot.yaml
# Conflicts:
#	pkg/variantregistry/snapshot.yaml
@neisw neisw force-pushed the trt-2647-5.0-rhcos10-default branch from 84a1567 to e15f740 Compare May 12, 2026 12:05
@openshift-ci openshift-ci Bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label May 12, 2026
@openshift-merge-bot
Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e

Comment thread pkg/variantregistry/ocp.go Outdated
@@ -1313,8 +1313,7 @@ func setOS(_ logrus.FieldLogger, variants map[string]string, jobName string) {
case variants[VariantReleaseMajor] == "4":
variants[VariantOS] = "rhcos9"
case variants[VariantReleaseMajor] == "5" || isMainBranch:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we'll need the special treatment for update jobs as discussed on slack, right?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

details details...

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 12, 2026

@neisw: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. ready-for-human-review Indicates a PR has been reviewed by automated tools and is ready for human review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants